Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Пересечение периодов (дат) ()
Author Message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Fri Jan 13, 2006 3:34 pm (написано за 21 секунду)
   Post subject: Пересечение периодов (дат)
Reply with quote

таблица содержит грубо 3 поля - начало периода fromClock,
конец периода toClock,
ну и id услуги - это usluga.
типы полей - первые 2 date и последнее integer
перед тем, как занести туда новую запись мне надо проверить не накладываются-ли периоды, тот, что собираюсь занести с каким-нибудь из тех, что уже есть, ес-но по заданнойуслуге.
я делаю так:
SQL:
SELECT count( * ) AS num
FROM TABLE
WHERE usluga = '$usluga' AND (
'$from' >= fromClock AND '$from' <= toClock
) OR (
'$to' >= fromClock AND '$to' <= toClock
) OR (
'$from' <= fromClock AND '$to' >= toClock
)
т.е. считаю количество пересечений, только мне нужно посчитать максимальное ежедневное пересечение в течение заданного периода, а мой пример считает сколько всего пересечений.

Для наглядности
К примеру в таблице есть периоды по нужной услуге:
2006-01-14 по 2006-01-17
2006-01-14 по 2006-01-17
2006-01-29 по 2006-02-02

Хотим занести новый период по этой услуге:
2006-01-13 по 2006-02-28

Теперь поясню для чего это используется:
Есть определенный набор услуг. Юзер может заказывать любую из них, причем заказывает по календарю, к примеру с 13 января по 28 февраля.
По каждой из услуг есть ограничение по количеству одновременно работающих, к примеру одновременно не более 3 услуг. Так вот мне надо юзеру либо разрешить заказывать на заданный период услугу, либо нет. Соответственно, если нет - тогда показать как-то проблемные периоды.


прошу помощи в решении этого вопроса.
Back to top
Педагог
Участник форума



Joined: 06 May 2003
Posts: 131
Карма: 3
   поощрить/наказать

Location: Ростов-на-Дону

PostPosted: Thu Jan 26, 2006 10:34 am (спустя 12 дней 19 часов 22 секунды; написано за 1 минуту 12 секунд)
   Post subject:
Reply with quote

Не SQL-решение:
Сделай цикл от 2006-01-13 по 2006-02-28 и на каждую дату ищи количество пересечений, и из них выбери максимальную.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML